package com.neuedu.cockpit.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.neuedu.cockpit.domain.HmCarInfo;

import java.util.List;

/**
 * 车辆管理信息Service接口
 *
 * @author neuedu
 * @date 2024-04-22
 */
public interface IHmCarInfoService extends IService<HmCarInfo> {
    /**
     * 查询车辆管理信息
     *
     * @param id 车辆管理信息主键
     * @return 车辆管理信息
     */
    public HmCarInfo selectHmCarInfoById(Long id);

    /**
     * 根据用户id和车架号查询车辆信息
     *
     * @param userId
     * @param carVin
     * @return
     */
    public HmCarInfo selectHmCarInfoByUserIdAndCarVin(Long userId, String carVin);

    /**
     * 根据用户id查询车辆信息
     *
     * @param userId
     * @return
     */
    public HmCarInfo selectInfoByUserId(Long userId);

    /**
     * 查询车辆管理信息列表
     *
     * @param hmCarInfo 车辆管理信息
     * @return 车辆管理信息集合
     */
    public List<HmCarInfo> selectHmCarInfoList(HmCarInfo hmCarInfo);

    public List<HmCarInfo> selectHmCarInfoListByVin(HmCarInfo hmCarInfo);
    /**
     * 新增车辆管理信息
     *
     * @param hmCarInfo 车辆管理信息
     * @return 结果
     */
    public int insertHmCarInfo(HmCarInfo hmCarInfo);

    /**
     * 修改车辆管理信息
     *
     * @param hmCarInfo 车辆管理信息
     * @return 结果
     */
    public int updateHmCarInfo(HmCarInfo hmCarInfo);

    public int bingCarVin(HmCarInfo hmCarInfo);

    public boolean checkVinOnlyOne(String vin);

    public boolean checkNfcOnlyOne(String vin);

    public int resetCarVin(Long id, String VinCode);

    /**
     * 批量删除车辆管理信息
     *
     * @param ids 需要删除的车辆管理信息主键集合
     * @return 结果
     */
    public int deleteHmCarInfoByIds(Long[] ids);

    /**
     * 删除车辆管理信息信息
     *
     * @param id 车辆管理信息主键
     * @return 结果
     */
    public int deleteHmCarInfoById(Long id);

    public int unlockUserAndCar(Long id);

    public int lockUserAndCar(HmCarInfo hmCarInfo);
}
